Pull-up resistors are often used at logic outputs where the logic device cannot source current such as open-collector transistor-to-transistor logic (TTL) devices. Such outputs are used for driving external devices or a logic bus with multiple devices connected to it.
The inter-integrated circuit (I2C) serial single-ended bus requires pull-up resistors on its clock (SCL) and data line (SDA) because the pins on the chips are of open-collector design. Pulling the bus line to ground indicates a logical zero while letting the bus line float to the rail voltage indicates a logical one. As a channel access method this allows one node to determine if another is transmitting by asserting an output, letting the external pull-up resistor pull the line to logic 1 level and monitoring the line state. If a second node pulls the line to zero, then the first node can detect that the other is transmitting.
Some disadvantages of pull-up resistors are the extra power consumed when current is drawn through the resistor and the slow rise time of the pull-up. A conventional solution to increase the speed of an open-collector or open-drain bus is to reduce the value of the pull-up resistor. Reducing the value of the pull-up resistor, however, increases power consumption making this conventional solution undesirable for low power applications.